package exp.day03;

import java.util.Arrays;
import java.util.Scanner;

//结义兄弟 题目描述
//    现在有一群同学都想结成异姓兄弟，规定按照年龄大小来从大到小排序。你来搜集这些同学的信息：姓名和对应的出生年月日。且他们不存在同年同月同日生的情况，你来帮助他们排个序。
//    输入
//    输入第一行有一个整数N(0< N < 1000)表示N个同学。
//    接下来有N行，且每行都有一个字符串（全为小写字母且长度小于30)和3个整数 ，分别表示姓名、年、月、日。
//    所有同学的年龄均为1900年以后的。
//    输出
//    请按从大到小的顺序输出所有同学的姓名。
//    假设不存在同年同月同日生的同学。
//    样例输入复制
//    4
//    zhangsan 2000 7 8
//    lisi 2000 5 2
//    wanger 2001 5 1
//    mazi 2000 5 1
//    样例输出
//    mazi
//    lisi
//    zhangsan
//    wanger
public class P05_Teacher {
    static class Date implements Comparable<Date> {
        int y, m, d;
        public Date(int y, int m, int d) {
            this.y = y;
            this.m = m;
            this.d = d;
        }

        @Override
        public int compareTo(Date that) {
            if(this.y != that.y) return this.y - that.y;
            if(this.m != that.m) return this.m - that.m;
            return this.d - that.d;
        }
    }

    static class Person implements Comparable<Person> {
        String name;
        Date birth;

        public Person(String name, Date birth) {
            this.name = name;
            this.birth = birth;
        }

        @Override
        public int compareTo(Person that) {
            return this.birth.compareTo(that.birth);
        }
    }

    public static void main(String[] args) {
        //替代二维数组的做法
        Scanner cin = new Scanner(System.in);
        Person[] persons = new Person[cin.nextInt()];
        for (int i = 0; i < persons.length; i++) {
            String name = cin.next();
            Date birth = new Date(cin.nextInt(),cin.nextInt(),cin.nextInt());
            persons[i] = new Person(name, birth);
        }
        Arrays.sort(persons);
        for (Person person : persons) {
            System.out.println(person.name);
        }
    }

}
